/* ConfigStream.h
 * 
 *  Author          : Alexander J. Yee
 *  Date Created    : 02/28/2018
 *  Last Modified   : 02/28/2018
 * 
 */

#pragma once
#ifndef ymp_ConfigurationFiles_ConfigStream_H
#define ymp_ConfigurationFiles_ConfigStream_H
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//  Dependencies
#include <string>
#include <deque>
#include "ConfigValue.h"
namespace ymp{
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
class ConfigStream{
public:
    ConfigStream(bool json = true);

    bool json() const{ return m_json; }

    void push(const char* buffer, upL_t bytes);
    ConfigValue get();

private:
    bool m_json;
    std::string m_buffer;
    std::deque<ConfigValue> m_parsed;
};
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
}
#endif
